package com.qunar.dyds.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.qunar.common.admin.service.AbstractService;
import com.qunar.dyds.entity.InviteCode;

/**
 * 邀请码服务
 */
@Service
public class InviteCodeService extends AbstractService {

    /**
     * 添加邀请码
     * 
     * @param code 邀请码
     * @return 结果数
     */
    @Transactional
    public int add(InviteCode code) {

        logger.debug("add Start.");

        int ret = updateDAO.execute("v_invite_code.insert", code);

        logger.debug("add End.");

        return ret;
    }

    /**
     * 添加邀请码
     * 
     * @param code 邀请码
     * @return 结果数
     */
    @Transactional
    public int add(List<InviteCode> codes) {

        logger.debug("add Start.");

        // 批量插入
        int ret = updateDAO.execute("v_invite_code.insertBatch", codes);

        logger.debug("add End.");

        return ret;
    }

    /**
     * 查询单个邀请码
     * 
     * @param code 邀请码
     * @return
     */
    public InviteCode get(String code) {

        logger.debug("get Start.");

        Map<String, Object> cond = new HashMap<String, Object>();
        cond.put("code", code);

        InviteCode inviteCode = queryDAO.executeForObject("v_invite_code.select", cond, InviteCode.class);

        logger.debug("get End.");

        return inviteCode;
    }

    /**
     * 查询符合条件记录数
     * 
     * @param cond 查询条件
     * @return 记录数
     */
    public int getCount(Map<String, Object> cond) {

        logger.debug("getCount Start.");

        int cnt = queryDAO.executeForObject("v_invite_code.selectCount", cond, Integer.class);

        logger.debug("getCount End.");

        return cnt;
    }

    /**
     * 查询记录列表
     * 
     * @param cond 查询条件
     * @param startIndex 开始记录索引
     * @param limit 查询条数
     * @return 记录列表
     */
    public List<InviteCode> search(Map<String, Object> cond, int startIndex, int limit) {

        logger.debug("search Start.");

        List<InviteCode> list = queryDAO.executeForObjectList("v_invite_code.select", cond, startIndex, limit);

        logger.debug("search End.");

        return list;
    }

    /**
     * 更新邀请码信息
     * 
     * @param code 邀请码信息
     * @return
     */
    @Transactional
    public int update(InviteCode code) {

        logger.debug("updata Start.");

        int ret = updateDAO.execute("v_invite_code.update", code);

        logger.debug("update End.");

        return ret;
    }

    /*
    @Transactional
    public int delete(int id) {

        logger.debug("delete Start.");

        int ret = updateDAO.execute("v_invite_code.delete", id);

        logger.debug("delete End.");

        return ret;
    }*/
}
